package mtn.bowen.yan.server.service;

import com.jfoenix.controls.JFXComboBox;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.PieChart;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import mtn.bowen.yan.server.model.FoodRank;
import mtn.bowen.yan.server.model.PollsSuggest;

import java.util.List;
import java.util.Map;

/**
 * @author <a href=mailto:yanbowen90@foxmail.com> bowen.yan </a>
 * @version 1.0
 * @description: TODO
 * @date 2021-11-04 6:49 AM
 */
public interface PollsSuggestService {

    /**
     * 按种类显示待投票菜品
     *
     * @param pollsSuggestComboBox 种类
     * @return 带投票菜品集合
     */
    VBox pollsSuggestByKind(JFXComboBox pollsSuggestComboBox);

    /**
     * 更新投票建议UI
     *
     * @param ui       带投票UI
     * @param comboBox 带投票集合
     */
    void updatePollsSuggestUi(HBox ui, JFXComboBox comboBox);


    /**
     * 存储投票建议
     *
     * @param pollsSuggest 投票信息
     */
    void savePollsSuggest(PollsSuggest pollsSuggest);

    /**
     * 查询day天前的数据
     *
     * @param day 天数
     * @return 结果集合
     */
    List<PollsSuggest> selectByDay(Integer day);

    /**
     * 获取每日投票次数
     *
     * @param day 天数
     */
    Map<Integer, List<PollsSuggest>> getPollsNumByDay(Integer day);

    /**
     * 构造折线统计图
     *
     * @param lineChart 图
     */
    void createLineChart(LineChart<String, Number> lineChart, Map<Integer, List<PollsSuggest>> pollsNumByDay);

    /**
     * 构造饼图
     *
     * @param pieChart 饼图对象
     */
    void createPieChart(PieChart pieChart);

    /**
     * 查询day天内投票信息
     *
     * @param day 天数
     * @return 投票信息
     */
    Map<String, FoodRank> selectPollsInfo(Integer day);
}
